package com.cskaoyan._10final._04variable._02local;

/**
 * @description:
 * @author: 景天
 * @date: 2023/2/10 11:00
 **/
/*
final修饰局部变量
    局部常量
        存储还是在栈上
        生命周期跟方法同生共死
        唯一的区别就是不可以改变
    基本数据类型的局部变量 ----> 值不能变
    引用数据类型的局部变量-----> 引用不能变,对象的状态可以改变
 */
public class Demo {
    public static void main(String[] args) {
        // 基本数据类型的局部变量
        final int a = 1;
        // 可以进行访问
        System.out.println(a);
        // 不可以修改
        // Cannot assign a value to final variable 'a'
        // a = 2;

        // 引用数据类型的局部变量
        final Student student = new Student("zs", 20);
        System.out.println(student.name);
        System.out.println(student.age);
        // 引用不能发生改变
        Student student1 = new Student("ls", 22);
        // Cannot assign a value to final variable 'student'
        // student = student1;

        // 对象的状态可以改变
        student.age = 200;
        student.name = "坤坤";
        System.out.println(student.name);
        System.out.println(student.age);

        // 方法调用
        method(10);

    }

    // 方法中的形参作为局部变量
    public static void method(final int a) {
        // a += 1;
        // a = 100;
        System.out.println(a);
    }
}

class Student{
    String name;
    int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
}